﻿#ifndef _AUDIO_ASSET_H_
#define _AUDIO_ASSET_H_

#include "Asset.h"
#include "..//ResourseManager//AudioAsset.h"
#include <string>

class AudioAsset : public Asset
{
public:
    AudioAsset(const std::string& id, const std::string& path);
    virtual ~AudioAsset();

    // 实现Asset基类接口
    virtual bool Load() override;
    virtual void Unload() override;

    // 播放控制方法
    bool play(bool loop=true) const; //开始播放
    bool pause() const; //暂停
    bool restart(); //重新开始
    bool setLoop(bool loop) const; //设置循环播放

    // 音量控制方法
    bool setVolume(float volume); //设置音量 0-100
    float getVolume() const;      //获取音量

    // 淡入淡出控制方法
    bool fadeIn(float durationSeconds);  //淡入
    bool fadeOut(float durationSeconds); //淡出

    // 状态查询方法
    bool isInitialized() const; //检查是否成功初始化
    bool isPlaying() const; //检查是否正在播放
    bool isLooping() const; //检查是否循环播放
    float getDuration() const;  //获取音频总时长
    float getPlayingOffset() const;  //获取当前播放位置

private:
    std::string m_path;
};

#endif // !_AUDIO_ASSET_H_